var express = require('express')
var path = require('path')
var session = require('express-session')
var router = require('./router')

var app = express()

//开放静态资源
app.use('/public/', express.static(path.join(__dirname, './public/')))
app.use('/node_modules/', express.static(path.join(__dirname, './node_modules/')))

//配置模板引擎 npm i art-template express-art-template
app.engine('html', require('express-art-template'))
//默认就是views 目录里找
app.set('views', path.join(__dirname, './views/'))

//在挂载路由之前，body-parser, 解析表单post请求体
app.use(express.urlencoded({ extended: false }))
app.use(express.json())


//在express框架中，默认不支持session和cookie,使用第三方中间件express-session解决
//https://www.npmjs.com/package/express-session
//1.npm i express-session
//2.配置(app.use(router)之前)
//3.使用
//  通过req.session来访问和设置session成员
//  添加session数据：req.session.foo = 'bar'
//  访问session数据： req.session.foo
app.use(session({
    secret: 'keyboard cat', //配置加密字符串，在原有加密基础之上和这个字符串拼起来。增加安全性
    resave: false,
    saveUninitialized: true //无论你是否使用session，都默认直接给你分配一把钥匙
  }))

//把了路由挂载到app中
app.use(router)

//配置一个处理404的中间件
app.use(function (req,res) {
  res.render('404.html')
})

//配置一个全局错误处理中间件
app.use(function (err,req,res,next) {
  res.status(500).json({
    err_code:500,
    message:err.message
  })
})

app.listen(5000, function () {
    console.log('running')
})